﻿#include"test.h"
#include<QList>
#include<QHash>
#include<QApplication>
#include<QDebug>
#include"XQLog.hpp"
#include<iostream>
#include <iomanip> // 头文件中包含 setw
QList<QPair<QString, void(*)()>> TestDirectory()
{
	return {
	{"http服务器(XQHttpServer)",httpServer},
	{"http客户端(XQHttpClient)",httpClient},
	{"mysql测试(XQMySql)",mysqlTest},
	{"ftp客户端测试(XQFtp)",ftpTest},
	{"二维码生成(XQRCode)",QRCodeTest},
	{"压缩解压测试(XQAlgorithm)",compressTest},
	{"登录窗口测试(XQLoginWidget)",loginWidgetTest},
	};
}
void run()
{
	//测试函数列表
	QList<QPair<QString, void(*)()>> funcs = TestDirectory();
	std::cout << QString("测试用例").toLocal8Bit().data()<<std::endl;
	for (int i=0;i<funcs.size();i++)
	{
		auto& func = funcs[i];
		QString str = QString("%1 %2").arg(i).arg(func.first);
		std::cout << std::left << std::setw(width) << str.toLocal8Bit().data();//格式化对齐输出
		if ((i + 1) % row == 0 || (i + 1) == funcs.size())std::cout << std::endl;//换行
	}
	std::cout << std::endl;
	std::cout << QString("请输入序号进行选择 0~%1").arg(funcs.size()-1).toLocal8Bit().data() << std::endl;
	int select = 0;//选择
	while (true)
	{
		std::cin >> select;
		if(select < 0 || select >= funcs.size())
		{
			std::cout << QString("序号不合法请重新选择").toLocal8Bit().data() << std::endl;
			continue;
		}
		break;
	}
	std::cout << QString("你选择了 %1 %2").arg(select).arg(funcs[select].first).toLocal8Bit().data() << std::endl;
	if(funcs[select].second!=nullptr)
		funcs[select].second();//运行
}

void bindDeleteLater(QObject* object)
{
	QObject::connect(qApp, &QApplication::aboutToQuit, object, &QObject::deleteLater);//设置内存释放
}
